Declarative Base কী এবং কিভাবে কাজ করে?

SQLAlchemy তে Declarative Base ব্যবহার - এসকিউএল অ্যালকেমি (SQLAlchemy) - Database Tutorials

325

SQLAlchemy তে Declarative Base একটি বিশেষ কৌশল, যা ডেটাবেস টেবিলগুলির সাথে Python ক্লাসগুলিকে সংযুক্ত করতে ব্যবহৃত হয়। এটি ORM (Object Relational Mapping) এর একটি গুরুত্বপূর্ণ অংশ এবং SQLAlchemy এর ORM ব্যবহারে সাধারণত ব্যবহৃত হয়। Declarative Base ক্লাসের মাধ্যমে আপনি Python ক্লাসগুলোকে ডেটাবেস টেবিলের সাথে ম্যাপ করতে পারেন, যা টেবিলের কাঠামো (schema) এবং সম্পর্ক (relationship) সংজ্ঞায়িত করে।

Declarative Base এর সাহায্যে ক্লাসগুলো সহজে তৈরি করা যায় এবং সেগুলোকে ডেটাবেস টেবিল হিসেবে ব্যবহার করা যায়।


Declarative Base এর ধারণা

Declarative Base একটি ক্লাস যা SQLAlchemy এর Base অবজেক্ট থেকে ইনহেরিট করা হয় এবং এটি class-based টেবিল ম্যাপিং পদ্ধতি সরবরাহ করে। এর মাধ্যমে, Python ক্লাসকে সরাসরি ডেটাবেস টেবিলের সাথে যুক্ত করা সম্ভব হয়। যখন ক্লাসটি Base থেকে ইনহেরিট করে, তখন ক্লাসের অ্যাট্রিবিউটগুলি টেবিলের কলাম হিসাবে আচরণ করতে শুরু করে।


Declarative Base কিভাবে কাজ করে?

  1. Base ক্লাস তৈরি করা: প্রথমে, declarative_base() ফাংশন ব্যবহার করে একটি Base ক্লাস তৈরি করতে হয়।
  2. Python ক্লাস তৈরি করা: তারপর, আপনি আপনার Python ক্লাস তৈরি করেন এবং তাকে Base থেকে ইনহেরিট করেন।
  3. টেবিলের কাঠামো সংজ্ঞায়িত করা: Python ক্লাসে কলামগুলো সংজ্ঞায়িত করতে Column ব্যবহার করা হয়, যেখানে প্রতিটি কলামের নাম, ডেটা টাইপ এবং অন্যান্য বৈশিষ্ট্য (যেমন primary_key=True, nullable=False ইত্যাদি) দেওয়া হয়।
  4. ডেটাবেসে টেবিল তৈরি করা: পরে, Base.metadata.create_all() মেথড ব্যবহার করে ডেটাবেসে টেবিল তৈরি করা হয়।

Declarative Base উদাহরণ

ধরা যাক, আমরা একটি User নামক টেবিল তৈরি করতে চাই, যার মধ্যে id, name, এবং age কলাম থাকবে। নিচে SQLAlchemy তে Declarative Base ব্যবহার করে কীভাবে কাজ করা যায় তা দেখানো হল:

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# Declarative Base তৈরি করা
Base = declarative_base()

# Python ক্লাস তৈরি করা, যা টেবিলের সাথে ম্যাপ হবে
class User(Base):
    __tablename__ = 'users'  # টেবিলের নাম
    id = Column(Integer, primary_key=True)  # প্রাথমিক কী
    name = Column(String)  # নাম কলাম
    age = Column(Integer)  # বয়স কলাম

# SQLite ডেটাবেসের জন্য ইঞ্জিন তৈরি
engine = create_engine('sqlite:///example.db', echo=True)

# টেবিল তৈরি করা
Base.metadata.create_all(engine)

# Session তৈরি
Session = sessionmaker(bind=engine)
session = Session()

# নতুন ইউজার ইনসার্ট করা
new_user = User(name="Alice", age=30)
session.add(new_user)
session.commit()

# ইউজার রিড করা
users = session.query(User).all()
for user in users:
    print(user.name, user.age)

# সেশন বন্ধ করা
session.close()

এখানে:

  1. Base ক্লাস: declarative_base() ফাংশন দিয়ে একটি Base ক্লাস তৈরি করা হয়েছে।
  2. User ক্লাস: User নামক Python ক্লাস তৈরি করা হয়েছে, যা Base ক্লাস থেকে ইনহেরিট করে। এই ক্লাসের মাধ্যমে users টেবিলের কাঠামো এবং কলাম সংজ্ঞায়িত করা হয়েছে।
  3. টেবিল তৈরি: Base.metadata.create_all(engine) এর মাধ্যমে ডেটাবেসে users টেবিল তৈরি করা হয়েছে।
  4. ডেটা ম্যানিপুলেশন: Session ব্যবহার করে নতুন ইউজার ইনসার্ট করা হয়েছে এবং সব ইউজার রিড করা হয়েছে।

Declarative Base এর সুবিধা

  1. সহজ এবং পরিষ্কার কোড: Declarative Base ব্যবহারে কোড লেখা সহজ এবং পরিষ্কার হয়, কারণ এতে ক্লাসের মাধ্যমে টেবিল এবং কলাম সংজ্ঞায়িত করা হয়।
  2. ORM পদ্ধতির সাথে সংযুক্তি: ORM ব্যবহার করতে হলে Declarative Base একটি শক্তিশালী এবং নির্ভরযোগ্য পদ্ধতি সরবরাহ করে।
  3. এটি টেবিল ও ক্লাসের মধ্যে একটি সোজাসুজি সম্পর্ক স্থাপন করে, যা ডেটাবেস অপারেশনগুলোকে অবজেক্ট-ওরিয়েন্টেড পদ্ধতিতে করতে সাহায্য করে।

Declarative Base এবং Table অবজেক্টের পার্থক্য

বিষয়Declarative BaseTable অবজেক্ট
ব্যবহারPython ক্লাসকে টেবিলের সাথে সংযুক্ত করার জন্যSQLAlchemy Core এর মাধ্যমে সরাসরি টেবিল কাঠামো তৈরি
ম্যাপিং পদ্ধতিক্লাস থেকে টেবিল তৈরি এবং Column ডিফাইন করাটেবিল এবং কলাম সংজ্ঞায়িত করা হয়।
টেবিলের কাঠামোPython ক্লাসের মাধ্যমেMetaData এবং Table অবজেক্টের মাধ্যমে
টেবিল সম্পর্কBase থেকে ইনহেরিট করা হয়Table অবজেক্টের মাধ্যমে সম্পর্ক নির্ধারণ করা হয়

সারাংশ

Declarative Base SQLAlchemy ORM ব্যবহারে একটি শক্তিশালী এবং সুবিধাজনক পদ্ধতি। এটি Python ক্লাস এবং ডেটাবেস টেবিলের মধ্যে সম্পর্ক স্থাপন করতে সাহায্য করে। Base থেকে ইনহেরিট করা ক্লাসের মাধ্যমে টেবিলের কাঠামো সহজেই সংজ্ঞায়িত করা যায়, যা ডেটাবেস ম্যানিপুলেশনকে আরো পরিষ্কার এবং কার্যকর করে তোলে। SQLAlchemy ORM এর মাধ্যমে Declarative Base পদ্ধতি ডেটাবেস টেবিল ও তাদের সম্পর্কের জন্য একটি রিডেবল এবং পরিষ্কার সমাধান প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...